#!/bin/bash

# 云存储应用打包脚本
# 使用方法: ./package_cloud_storage.sh

echo "开始打包云存储应用..."

# 创建临时目录
TEMP_DIR="cloud_storage_package_$(date +%Y%m%d_%H%M%S)"
mkdir -p $TEMP_DIR

echo "创建目录结构..."

# 创建目录结构
mkdir -p $TEMP_DIR/application/admin/controller/yuncunchu
mkdir -p $TEMP_DIR/application/admin/model/yuncunchu
mkdir -p $TEMP_DIR/application/admin/validate/yuncunchu
mkdir -p $TEMP_DIR/application/admin/view/yuncunchu/config
mkdir -p $TEMP_DIR/application/admin/view/yuncunchu/file
mkdir -p $TEMP_DIR/application/admin/view/yuncunchu/example
mkdir -p $TEMP_DIR/application/common/service/driver
mkdir -p $TEMP_DIR/public/assets/js/backend/yuncunchu
mkdir -p $TEMP_DIR/database

echo "复制文件..."

# 复制控制器文件
cp application/admin/controller/yuncunchu/*.php $TEMP_DIR/application/admin/controller/yuncunchu/

# 复制模型文件
cp application/admin/model/yuncunchu/*.php $TEMP_DIR/application/admin/model/yuncunchu/

# 复制验证器文件
cp application/admin/validate/yuncunchu/*.php $TEMP_DIR/application/admin/validate/yuncunchu/

# 复制视图文件
cp application/admin/view/yuncunchu/config/*.html $TEMP_DIR/application/admin/view/yuncunchu/config/
cp application/admin/view/yuncunchu/file/*.html $TEMP_DIR/application/admin/view/yuncunchu/file/
cp application/admin/view/yuncunchu/example/*.html $TEMP_DIR/application/admin/view/yuncunchu/example/

# 复制服务文件
cp application/common/service/YuncunchuService.php $TEMP_DIR/application/common/service/
cp application/common/service/driver/*.php $TEMP_DIR/application/common/service/driver/

# 复制JavaScript文件
cp public/assets/js/backend/yuncunchu/*.js $TEMP_DIR/public/assets/js/backend/yuncunchu/

# 复制数据库文件
cp database/yuncunchu_tables.sql $TEMP_DIR/database/
cp database/yuncunchu_menu.sql $TEMP_DIR/database/

# 复制文档
cp 云存储应用文件清单.md $TEMP_DIR/
cp 云存储集成指南.md $TEMP_DIR/

echo "创建安装脚本..."

# 创建安装脚本
cat > $TEMP_DIR/install.sh << 'EOF'
#!/bin/bash

# 云存储应用安装脚本
echo "开始安装云存储应用..."

# 检查是否在正确的目录
if [ ! -d "application" ]; then
    echo "错误：请在项目根目录下运行此脚本"
    exit 1
fi

echo "1. 复制文件到项目目录..."

# 复制文件
cp -r application/admin/controller/yuncunchu/ application/admin/controller/
cp -r application/admin/model/yuncunchu/ application/admin/model/
cp -r application/admin/validate/yuncunchu/ application/admin/validate/
cp -r application/admin/view/yuncunchu/ application/admin/view/
cp -r application/common/service/driver/ application/common/service/
cp application/common/service/YuncunchuService.php application/common/service/
cp -r public/assets/js/backend/yuncunchu/ public/assets/js/backend/

echo "2. 安装Composer依赖..."
composer require aliyuncs/oss-sdk-php qcloud/cos-sdk-v5 qiniu/php-sdk

echo "3. 执行数据库SQL..."
echo "请手动执行以下SQL文件："
echo "- database/yuncunchu_tables.sql"
echo "- database/yuncunchu_menu.sql"

echo "4. 配置云存储..."
echo "请访问后台管理页面，添加云存储配置："
echo "- 阿里云OSS"
echo "- 腾讯云COS"
echo "- 七牛云"

echo "安装完成！"
echo "请参考 云存储集成指南.md 进行应用集成"
EOF

chmod +x $TEMP_DIR/install.sh

echo "创建Composer配置..."

# 创建composer.json
cat > $TEMP_DIR/composer.json << 'EOF'
{
    "require": {
        "aliyuncs/oss-sdk-php": "^2.6",
        "qcloud/cos-sdk-v5": "^2.6",
        "qiniu/php-sdk": "^7.11"
    }
}
EOF

echo "创建README文件..."

# 创建README
cat > $TEMP_DIR/README.md << 'EOF'
# 云存储应用

## 简介
这是一个基于ThinkPHP框架的云存储应用，支持多种云存储服务商，包括阿里云OSS、腾讯云COS、七牛云等。

## 功能特性
- 支持多种云存储服务商
- 本地备份功能
- 文件去重
- 目录结构配置
- 后台管理界面
- 文件管理功能

## 安装步骤
1. 运行安装脚本：`./install.sh`
2. 执行数据库SQL文件
3. 配置云存储参数
4. 集成到您的应用中

## 使用方法
请参考 `云存储集成指南.md` 文件。

## 支持的服务商
- 阿里云OSS
- 腾讯云COS
- 七牛云
- 本地存储

## 文件说明
- `云存储应用文件清单.md`: 详细的文件清单
- `云存储集成指南.md`: 集成指南
- `install.sh`: 安装脚本
EOF

echo "打包文件..."

# 创建压缩包
PACKAGE_NAME="cloud_storage_$(date +%Y%m%d_%H%M%S).tar.gz"
tar -czf $PACKAGE_NAME $TEMP_DIR

echo "清理临时文件..."
rm -rf $TEMP_DIR

echo "打包完成！"
echo "文件包：$PACKAGE_NAME"
echo "包含以下内容："
echo "- 云存储应用完整代码"
echo "- 安装脚本"
echo "- 集成指南"
echo "- 数据库SQL文件"
echo "- Composer配置"
